package com.wjh.garbagetype.controller;

import com.wjh.garbagetype.enums.HttpCodeEnum;
import com.wjh.garbagetype.service.GarbageTypeService;
import com.wjh.garbagetype.result.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;

/**
 * @Description 垃圾分类处理Controller
 * @Date 2020/4/17 17:55
 * @Created by jiahui.wu
 */
@RestController
public class GarbageTypeController {

    @Autowired
    private GarbageTypeService garbageTypeService;

    /**
     *  图片参数名
     */
    private static final String FILE_PARAM_NAME = "file";


    /**
     *  图片最大字节
     */
    private static final long FILE_MAX_SIZE = 891200;


    /**
     * 上传图片，返回图片的垃圾分类
     *
     * 成功识别后返回一个列表，其中包含trust和lajitype参数。
     * trust是图像可信度，单位是百分比，越接近100表示识别结果越可信。
     * lajitype表示垃圾类别，其中0表示为可回收垃圾、1为有毒有害垃圾、2为厨余或湿垃圾、3为其他或干垃圾，
     * 4为结果中的未知类型（例如识别到了天空、建筑、明星人物等情况，你可以在前端显示时排除，或者提示非垃圾物品）
     * @return
     */
    @RequestMapping("/garbageType")
    public Result garbageType(HttpServletRequest httpServletRequest) {
        MultipartHttpServletRequest request = (MultipartHttpServletRequest) httpServletRequest;
        MultipartFile file = request.getFile(FILE_PARAM_NAME);
        // 判断上传的图片是否为空
        if (file == null) {
            return Result.error(HttpCodeEnum.PARAM_ERROR.getCode(), HttpCodeEnum.PARAM_ERROR.getMessage());
        }
        // 判断图片是否超过大小，不可超过800KB
        long size = file.getSize();
        if (size > FILE_MAX_SIZE) {
            return Result.error(HttpCodeEnum.FILE_TOO_LARGE.getCode(), HttpCodeEnum.FILE_TOO_LARGE.getMessage());
        }
        return garbageTypeService.garbageType(file);
    }


}
